#include "digr.h"

#include <iostream>


//void testcrawl(DiGrNode*, vector<DiGrNode*> , int, double, int);

//vector<DiGrNode*> therule(DiGrNode*);

//int main();

/* actual definition of C++ functions */
void testcrawl(DiGrNode *current, vector<DiGrNode*> (*rule)(DiGrNode*, vector<DiGrNode*>*), int a, double b, int c) {
  vector<DiGrNode*> *queue = new vector<DiGrNode*>();
  do {

    /* crawl arguments go here */

    // 'call' compiles to
    // f(current, queue);

    // 'set myrule' compiles to 
    // f = myrule;


  } while (queue->size() > 0);
  
}

vector<DiGrNode*> therule(DiGrNode *current, vector<DiGrNode*> *returnQueue) {

  vector<DiGrNode*> returnNodes;

  std::cout << "hi from rule!" << std::endl;
  
  return returnNodes;
}

int main() {

  DiGrNode *temp = 0;
  vector<DiGrNode*> myvector;
  
  vector<DiGrNode*> (*g)(DiGrNode*, vector<DiGrNode*>*) = therule;

  testcrawl(temp, therule, 3, 4.0, 7);

  return 0;
}
